/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.ColunaModel;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Santos
 */
public class ColunaDAO extends AbstractDAO implements InterfaceDAO<List<ColunaModel>, ColunaModel> {



    @Override
    public boolean setDados(ColunaModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {
            case "I":
                sql = "INSERT INTO \n"
                        + "  `tcol_coluna`\n"
                        + "(\n"
                        //+ "  `TCOL_CODIGO_PK`,\n"
                        + "  `TCOL_TABELA_FK_PK`,\n"
                        + "  `TCOL_NOME`,\n"
                        + "  `TCOL_COMENTARIO`,\n"
                        + "  `TCOL_TIPO_DADO_PADRAO`,\n"
                        + "  `TCOL_NOME_AMIGAVEL`,\n"
                        + "  `TCOL_TAMANHO_PADRAO`,\n"
                        + "  `TCOL_ACEITA_NULL_PADRAO`,\n"
                        + "  `TCOL_VALOR_DEFAULT`,\n"
                        + "  `TCOL_AUTO_INCREMENTO_PADRAO`,\n"
                        + "  `TCOL_CHAVE_PRIMARIA_PADRAO`,\n"
                        + "  `TCOL_CHAVE_ESTRANGEIRA_PADRAO`,\n"
                        + "  `TCOL_CHAVE_UNICA_PADRAO`,\n"
                        + "  `TCOL_TEM_CHECK_PADRAO`,\n"
                        + "  `TCOL_SQL`,\n"
                        + "  `TCOL_ATIVO`) \n"
                        + "VALUE (\n"
                        //+ "  :TCOL_CODIGO_PK,\n"
                        + "  " + model.getTabela().getCodigo() + ",\n"
                        + "  '" + model.getNome() + "',\n"
                        + "  '" + model.getComentario() + "',\n"
                        + "  '" + model.getTipoDadoPadrao() + "',\n"
                        + "  '" + model.getNomeAmigavel() + "',\n"
                        + "  " + model.getTamanhoDadoPadrao() + ",\n"
                        + "  '" + model.getAceitaNullPadrao() + "',\n"
                        + "  '" + model.getValorPadrao() + "',\n"
                        + "  '" + model.getAutoIncrementoPadrao() + "',\n"
                        + "  '" + model.getChavePrimariaPadrao() + "',\n"
                        + "  '" + model.getChaveEstrangeiraPadrao() + "',\n"
                        + "  '" + model.getChaveUnicaPadrao() + "',\n"
                        + "  '" + model.getTemCheckPadrao() + "',\n"
                        + "  '" + model.getSql() + "',\n"
                        + "  '" + model.getAtivo() + "')";
                break;
            case "U":
                sql = "UPDATE \n"
                        + "  `tcol_coluna`  \n"
                        + "SET \n"
                        + "  `TCOL_NOME` = '" + model.getNome() + "',\n"
                        + "  `TCOL_COMENTARIO` = '" + model.getComentario() + "',\n"
                        + "  `TCOL_TIPO_DADO_PADRAO` = '" + model.getTipoDadoPadrao() + "',\n"
                        + "  `TCOL_NOME_AMIGAVEL` = '" + model.getNomeAmigavel() + "',\n"
                        + "  `TCOL_TAMANHO_PADRAO` = " + model.getTamanhoDadoPadrao() + ",\n"
                        + "  `TCOL_ACEITA_NULL_PADRAO` = '" + model.getAceitaNullPadrao() + "',\n"
                        + "  `TCOL_VALOR_DEFAULT` = '" + model.getValorPadrao() + "',\n"
                        + "  `TCOL_AUTO_INCREMENTO_PADRAO` = '" + model.getAutoIncrementoPadrao() + "',\n"
                        + "  `TCOL_CHAVE_PRIMARIA_PADRAO` = '" + model.getChavePrimariaPadrao() + "',\n"
                        + "  `TCOL_CHAVE_ESTRANGEIRA_PADRAO` = '" + model.getChaveEstrangeiraPadrao() + "',\n"
                        + "  `TCOL_CHAVE_UNICA_PADRAO` = '" + model.getChaveUnicaPadrao() + "',\n"
                        + "  `TCOL_TEM_CHECK_PADRAO` = '" + model.getTemCheckPadrao() + "',\n"
                        + "  `TCOL_SQL` = '" + model.getSql() + "',\n"
                        + "  `TCOL_ATIVO` = '" + model.getAtivo() + "' \n"
                        + "WHERE \n"
                        + "  `TCOL_CODIGO_PK` = " + model.getCodigo() + " AND \n"
                        + "  `TCOL_TABELA_FK_PK` = " + model.getTabela().getCodigo() + "";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tcol_coluna` \n"
                        + "WHERE \n"
                        + "  `TCOL_CODIGO_PK` = " + model.getCodigo() + " AND \n"
                        + "  `TCOL_TABELA_FK_PK` = " + model.getTabela().getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<ColunaModel> getDados(ColunaModel model) {
        model.setResultSet(null);
        model.getListaColuna().clear();
        String sql = "SELECT \n"
                + "       `coluna`.`TCOL_CODIGO_PK`,\n"
                + "       `produto`.`TPRO_CODIGO_PK`,\n"
                + "       `produto`.`TPRO_NOME`,\n"
                + "       `coluna`.`TCOL_TABELA_FK_PK`,\n"
                + "       `tabela`.`TTAB_NOME`,\n"
                + "       `coluna`.`TCOL_NOME`,\n"
                + "       `coluna`.`TCOL_COMENTARIO`,\n"
                + "       `coluna`.`TCOL_NOME_AMIGAVEL`,\n"
                + "       `coluna`.`TCOL_TIPO_DADO_PADRAO`,\n"
                + "       `coluna`.`TCOL_TAMANHO_PADRAO`,\n"
                + "       `coluna`.`TCOL_ACEITA_NULL_PADRAO`,\n"
                + "       `coluna`.`TCOL_VALOR_DEFAULT`,\n"
                + "       `coluna`.`TCOL_AUTO_INCREMENTO_PADRAO`,\n"
                + "       `coluna`.`TCOL_CHAVE_PRIMARIA_PADRAO`,\n"
                + "       `coluna`.`TCOL_CHAVE_ESTRANGEIRA_PADRAO`,\n"
                + "       `coluna`.`TCOL_CHAVE_UNICA_PADRAO`, \n"
                + "	   `coluna`.`TCOL_TEM_CHECK_PADRAO`,\n"
                + "	   `coluna`.`TCOL_SQL`,\n"
                + "       `coluna`.`TCOL_ATIVO`\n"
                + "       FROM \n"
                + "         `tcol_coluna` coluna\n"
                + "         inner join `ttab_tabela` tabela on `coluna`.`TCOL_TABELA_FK_PK` = `tabela`.`TTAB_CODIGO_PK`\n"
                + "         inner join `tpro_produto` produto on `tabela`.`TTAB_PRODUTO_FK` = `produto`.`TPRO_CODIGO_PK`";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    model.setResultSet(Select(sql + " where coluna.`TCOL_NOME` like '%" + model.getNome() + "%'", model.getNomeTela()));
                    break;
                case "porTabela":
                    model.setResultSet(Select(sql + " where `coluna`.`TCOL_TABELA_FK_PK` = " + model.getTabela().getCodigo() + "", model.getNomeTela()));
                    break;
            }
            while (model.getResultSet().next()) {
                br.com.documentar.model.ColunaModel p = new br.com.documentar.model.ColunaModel();
                p.setCodigo(rs.getInt("TCOL_CODIGO_PK"));
                p.getProduto().setCodigo(rs.getInt("TPRO_CODIGO_PK"));
                p.getProduto().setNome(rs.getString("TPRO_NOME"));
                p.getTabela().setCodigo(rs.getInt("TCOL_TABELA_FK_PK"));
                p.getTabela().setNome(rs.getString("TTAB_NOME"));
                p.setNome(rs.getString("TCOL_NOME"));
                p.setComentario(rs.getString("TCOL_COMENTARIO"));
                p.setNomeAmigavel(rs.getString("TCOL_NOME_AMIGAVEL"));
                p.setTipoDadoPadrao(rs.getString("TCOL_TIPO_DADO_PADRAO"));
                p.setTamanhoDadoPadrao(rs.getDouble("TCOL_TAMANHO_PADRAO"));
                p.setAceitaNullPadrao(rs.getString("TCOL_ACEITA_NULL_PADRAO").charAt(0));
                p.setValorPadrao(rs.getString("TCOL_VALOR_DEFAULT"));
                p.setAutoIncrementoPadrao(rs.getString("TCOL_AUTO_INCREMENTO_PADRAO").charAt(0));
                p.setChavePrimariaPadrao(rs.getString("TCOL_CHAVE_PRIMARIA_PADRAO").charAt(0));
                p.setChaveEstrangeiraPadrao(rs.getString("TCOL_CHAVE_ESTRANGEIRA_PADRAO").charAt(0));
                p.setChaveUnicaPadrao(rs.getString("TCOL_CHAVE_UNICA_PADRAO").charAt(0));
                p.setTemCheckPadrao(rs.getString("TCOL_TEM_CHECK_PADRAO").charAt(0));
                p.setSql(rs.getString("TCOL_SQL"));
                p.setAtivo(rs.getString("TCOL_ATIVO").charAt(0));
                model.getListaColuna().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        return model.getListaColuna();
    }
}
